先上程式碼
namespace Recca0120\Cart\Tests;
use Recca0120\Cart\Item;
use PHPUnit\Framework\TestCase;
class ItemTest extends TestCase
{
/** @test */
public function 測試商品屬性()
{
$attributes = [
'name' => '商品01',
'price' => 100,
'quantity' => 2
];
$item = new Item($attributes);
$this->assertEquals($attributes, $item->toArray());
}
}
// src/Item.php
namespace Recca0120\Cart;
class Item
{
private $attributes;
public function __construct($attributes = [])
{
$this->attributes = $attributes;
}
public function toArray()
{
return $this->attributes;
}
}
這樣就完成簡單的一個商品物件的程式
但希望程式能再描述清楚一些
所以再來進行程式碼的改造
// tests/ItemTest.php
namespace Recca0120\Cart\Tests;
use Recca0120\Cart\Item;
use PHPUnit\Framework\TestCase;
class ItemTest extends TestCase
{
/** @test */
public function 測試商品屬性()
{
$attributes = [
'name' => '商品01',
'price' => 100,
'quantity' => 2
];
$item = new Item($attributes);
$this->assertEquals($attributes, $item->toArray());
}
/** @test */
public function 使用mehtod來設定屬性()
{
$attributes = [
'name' => '商品01',
'price' => 100,
'quantity' => 2
];
$item = new Item();
$item->setName($attributes['name']);
$this->assertSame($attributes['name'], $item->getName());
$item->setPrice($attributes['price']);
$this->assertSame($attributes['price'], $item->getPrice());
$item->setQuantity($attributes['quantity']);
$this->assertSame($attributes['quantity'], $item->getQuantity());
$this->assertEquals($attributes, $item->toArray());
}
}
// src/Item.php
namespace Recca0120\Cart;
class Item
{
private $attributes;
public function __construct($attributes = [])
{
$this->attributes = $attributes;
}
public function setName($name)
{
$this->attributes['name'] = $name;
return $this;
}
public function getName()
{
return $this->attributes['name'];
}
public function setPrice($price)
{
$this->attributes['price'] = $price;
return $this;
}
public function getPrice()
{
return $this->attributes['price'];
}
public function setQuantity($quantity)
{
$this->attributes['quantity'] = $quantity;
return $this;
}
public function getQuantity()
{
return $this->attributes['quantity'];
}
public function toArray()
{
return $this->attributes;
}
}
這樣就完成了商品物件的基本型態
為什麼要加這些 method 呢?
純粹是為了 ide 更容易閱讀 ...
這樣以後使用這個物件的時候就可以不用看 doc 了 XDD
今天就先暫時寫這些內容,
Day05 要再來挑戰用最小修改測試案例的方法來進行重構
錯字:
----------------------v
public function 使用mehtod來設定屬性()